package bitclub;

import herramientas.BitUtil;
import menus.Menu;
import menus.MenuCajero;

/**
 * @author BIT COMPANY
 */
public class Main {

    /*
     * En este metodo principal de la aplicación nos encargamos unicamente del 
     * Logo del Cliente/Trabajador y de abrir el menu correspondiente a la persona logueada.
     */
    public static void main(String[] args) {

        Persona usuario;
        String dni;
        String password;
        int error;

        do {
            BitUtil.borra();

            do {
                BitUtil.logo();
                error = 0;
                //Solicitamos DNI y password
                dni = BitUtil.dameEnteroFijo("Introduzca DNI: ", 8);
                password = BitUtil.dameCadena("Password: ",10);

                //Primero probamos a ver si el usuario es de tipo Trabajador
                usuario = Trabajador.seleccionarPorDni(dni);
                //Si obtenemos un usuario válido buscando por trabajador...
                if (usuario != null) {
                    //...comprobamos la contraseña
                    if (!password.equals(usuario.getPassword())) {
                        //Si la contraseña es incorrecta ponemos el error en 2
                        error = 2;
                    }
                } else {
                    //Si no era Trabajador probamos a ver si el usuario es de tipo Cliente
                    usuario = Cliente.seleccionarPorDni(dni);
                    if (usuario == null) {
                        //El usuario como cliente tampoco existe, ponemos error igual a 1
                        error = 1;
                    } else {
                        //Comprobamos la contraseña
                        if (!password.equals(usuario.getPassword())) {
                            //Si la contraseña es incorrecta ponemos el error en 2
                            error = 2;
                        }
                    }
                }
                
                BitUtil.borra();

                switch (error) {
                    case 1: //Usuario no existe ni como Trabajador ni Cliente
                        System.out.println("El usuario no existe\n");
                        break;
                    case 2: //El usuario existe pero la contraseña es incorrecta
                        System.out.println("La contraseña no es válida\n");
                        break;
                }

            } while (error != 0);

            //Si error es igual a cero podemos abrir el menú que corresponda

            //Creamos un Menu el cual llamar en función del tipo de persona que utiliza el programa.        

            if (usuario instanceof Cliente) {
                MenuCajero menu;
                menu = new MenuCajero((Cliente) usuario);
                menu.menuPrincipal();
            } else {
                Menu menu;
                menu = new Menu((Trabajador) usuario);
                menu.menuPrincipal();
            }
        } while (true);
    }
}
